Text copied to clipboard!

Tytuł

Text copied to clipboard!

Programista systemowy

Opis

Text copied to clipboard!
Poszukujemy Programisty systemowego, który dołączy do zespołu odpowiedzialnego za projektowanie, rozwój i utrzymanie oprogramowania niskopoziomowego wspierającego działanie systemów operacyjnych, sterowników, narzędzi systemowych oraz komponentów infrastruktury IT. Osoba na tym stanowisku będzie pracować nad rozwiązaniami wymagającymi wysokiej wydajności, niezawodności i bezpieczeństwa, a także ścisłego zrozumienia architektury sprzętu, pamięci, procesów i komunikacji między komponentami systemu. Rola ta jest odpowiednia dla specjalisty, który dobrze odnajduje się w pracy z kodem blisko warstwy sprzętowej i potrafi analizować złożone problemy techniczne w środowiskach produkcyjnych oraz deweloperskich. Programista systemowy współpracuje z inżynierami oprogramowania, administratorami systemów, architektami rozwiązań oraz zespołami bezpieczeństwa w celu tworzenia stabilnych i skalowalnych komponentów systemowych. Do codziennych zadań należy implementacja nowych funkcji, optymalizacja istniejącego kodu, diagnozowanie błędów, analiza logów, profilowanie wydajności oraz przygotowywanie dokumentacji technicznej. Istotnym elementem pracy jest również testowanie rozwiązań w różnych środowiskach, automatyzacja procesów oraz zapewnianie zgodności z wymaganiami jakościowymi i bezpieczeństwa. Na tym stanowisku ważna jest bardzo dobra znajomość języków programowania wykorzystywanych w programowaniu systemowym, takich jak C, C++ lub Rust, a także praktyczne doświadczenie z systemami Linux lub Unix. Kandydat powinien rozumieć zagadnienia związane z zarządzaniem pamięcią, współbieżnością, synchronizacją procesów i wątków, interfejsami systemowymi, komunikacją międzyprocesową oraz debugowaniem na niskim poziomie. Mile widziane jest także doświadczenie w pracy ze sterownikami, systemami wbudowanymi, narzędziami kompilacji i integracji ciągłej. Szukamy osoby dokładnej, samodzielnej i nastawionej na rozwiązywanie problemów, która potrafi łączyć wiedzę teoretyczną z praktyką inżynierską. Kandydat powinien umieć czytać i tworzyć dokumentację techniczną, proponować usprawnienia architektoniczne oraz efektywnie współpracować w zespole projektowym. Oferujemy możliwość pracy nad krytycznymi komponentami technologicznymi, udział w ambitnych projektach infrastrukturalnych oraz rozwój kompetencji w obszarze wydajności, bezpieczeństwa i niezawodności systemów. To stanowisko daje realny wpływ na jakość działania platform, usług i urządzeń, z których korzystają użytkownicy końcowi oraz zespoły techniczne w organizacji.

Obowiązki

Text copied to clipboard!
  • Projektowanie i rozwijanie oprogramowania systemowego oraz narzędzi niskopoziomowych.
  • Tworzenie, testowanie i optymalizacja modułów współpracujących z systemem operacyjnym.
  • Analiza i usuwanie błędów związanych z wydajnością, pamięcią i stabilnością systemu.
  • Współpraca z zespołami infrastruktury, bezpieczeństwa i rozwoju aplikacji.
  • Przygotowywanie dokumentacji technicznej dla tworzonych komponentów i interfejsów.
  • Udział w przeglądach kodu oraz wdrażaniu dobrych praktyk programistycznych.
  • Monitorowanie działania komponentów systemowych w środowiskach testowych i produkcyjnych.
  • Automatyzacja procesów budowania, testowania i wdrażania oprogramowania systemowego.

Wymagania

Text copied to clipboard!
  • Doświadczenie w programowaniu w językach C, C++ lub Rust.
  • Bardzo dobra znajomość systemów Linux lub Unix.
  • Praktyczna wiedza z zakresu zarządzania pamięcią i współbieżności.
  • Umiejętność debugowania i analizy problemów na niskim poziomie.
  • Znajomość narzędzi takich jak GDB, Valgrind, strace lub perf.
  • Doświadczenie z systemami kontroli wersji, zwłaszcza Git.
  • Umiejętność czytania dokumentacji technicznej w języku angielskim.
  • Zdolność analitycznego myślenia i samodzielnego rozwiązywania problemów.

Potencjalne pytania na rozmowie

Text copied to clipboard!
  • Jakie masz doświadczenie w programowaniu systemowym lub niskopoziomowym?
  • W jakich językach programowania tworzysz oprogramowanie systemowe najczęściej?
  • Czy pracowałeś lub pracowałaś z systemami Linux, Unix albo BSD?
  • Jakie narzędzia wykorzystujesz do debugowania i profilowania kodu?
  • Czy masz doświadczenie w pracy ze sterownikami, kernel space lub embedded?
  • Jak podchodzisz do optymalizacji wydajności i zużycia pamięci?
  • Czy uczestniczyłeś lub uczestniczyłaś w przeglądach kodu i projektowaniu architektury?
  • Jak oceniasz swoją znajomość zagadnień związanych z bezpieczeństwem systemów?